﻿class PopWindow {
	private var _x:Number;
	private var _y:Number;
	private var _w:Number;
	private var _h:Number;
	private var _nombre:String;
	private var _texto:String;
	private var formato:TextFormat;
	private var _html:Boolean; // indica si el texto tiene formato html
	private var _embeber:Boolean; // indica si se puede embeber la fuente
	private var grosorBox:Number; // numero que ingresa el usuario
	private var _colorBox:Number; // puede ser un number
	private var _colorAlphaBox:Number;
	private var bIzq:Boolean;	// booleanos que determinan si los bordes estan activos
	private var bDer:Boolean;
	private var bArr:Boolean;
	private var bAb:Boolean;
	private var bCristal:Boolean;
	private var _drag:Boolean; // va a indicar si se puede draguear;
	private var _cerrar:Boolean;
	private var _cerrarEvent:Boolean; // devuelve el dato de que lo cerraron;
	private var _auto:Boolean;
	private var aColor:Array;
	private var aRatios:Array;
	private var aActivos:Array;
	private var aAlphas:Array;
	private var _clip:MovieClip;
		
	private static var instanciaNumero:Number=0; 
	public static function getInstancia():String {
		instanciaNumero++;
		return "mcWindow"+instanciaNumero;
	}
	
	function PopWindow(x:Number, y:Number, w:Number, h:Number, texto:String, colorBox:Number){
		_x = x; if(_x==undefined) {_x=0;}
		_y = y; if(_y==undefined) {_y=0;}
		_w = w; if(_w==undefined) {_w=150;}
		_h = h; if(_h==undefined) {_h=150;}
		_texto = texto; if(_texto==undefined) {_texto="Texto por default";}
		_colorAlphaBox=100;
		_colorBox = colorBox; if(colorBox==undefined) { _colorBox = 0xFFFFFF; _colorAlphaBox=0;}
		_cerrarEvent=false;
				
		formato = new TextFormat(); // INSTANCIO LAS COSAS
		aColor = new Array();
		aRatios = new Array();
		aActivos = new Array();
		aAlphas = new Array();
				
		formato.font = "Arial";
		formato.size = 10;
		formato.leading=2;
		
		grosorBox=10;
		
		bIzq=true; bArr=false; bDer=false; bAb=false; bCristal=false;
		setBordes();
	}
	
	public function nombre():String {
		return _nombre;
	}
	
	public function getClip():MovieClip {
		return _clip;
	}
	public function cerrado():Boolean {
		return _cerrarEvent;
	}
	public function options(fondo:Boolean, drag:Boolean, cerrar:Boolean, auto:Boolean):Void {
		bCristal = fondo;
		_drag = drag;
		_cerrar = cerrar;
		_auto = auto; if (auto==undefined) { _auto=false;}
	}
	
	public function setFont(fuente:String, nSize:Number, fontColor:Number, nLeading:Number):Void {
		with(formato) {
			font = fuente;
			size = nSize;
			leading =nLeading;
			color = fontColor;
		}
	}
	
	public function setBordes(activos:Array, grosor:Number, colores:Array, alphas:Array, ratios:Array){
		
		grosorBox = grosor; if(grosor==undefined) { grosorBox = 10;}
		aColor = colores; if(aColor==undefined) { aColor=[0xFFFFFF, 0xc8c8c8];}
		aRatios = ratios;
		aActivos = activos;
		aAlphas = alphas;
		if(aActivos==undefined) { aActivos= [1,0,0,0] }
		if(aActivos[0]==1) { bIzq = true } else { bIzq = false }
		if(aActivos[1]==1) { bArr = true } else { bArr = false }
		if(aActivos[2]==1) { bDer = true } else { bDer = false }
		if(aActivos[3]==1) { bAb = true } else { bAb = false }
	}
	
	public function embeber():Void {
	_embeber = true;
	}
	
	public function setHtml():Void {
		_html = true;
	}
	public function cerrar():Void{
	_clip[_nombre].removeMovieClip();
	_clip.unloadMovie();
	}
	
	//////////////////////////////////////////////////////////CREAR
	public function crear(parent:MovieClip) {
		var nombre:String = getInstancia();
		_nombre = nombre;
		var clip:MovieClip = parent.createEmptyMovieClip(nombre, parent.getNextHighestDepth());
		_clip=clip;
		var window:MovieClip = clip.createEmptyMovieClip(nombre, clip.getNextHighestDepth());
		var rW:Rectangulo = new Rectangulo(window, 0,0, _w, _h, 0,0);
		window.createTextField(nombre, clip.getNextHighestDepth(), 0,0, _w, _h);
		window[nombre].selectable = false;
		window[nombre].wordWrap = true;
		window[nombre].multiline = true;
		if(!_html){
		window[nombre].text = _texto;
		} else {
			window[nombre].html= true;
			window[nombre].htmlText = _texto;
		}
			var nHeight:Number = window[nombre]._height;
			var nWidth:Number = window[nombre]._width;
		window[nombre].autoSize="left";
		window[nombre].setTextFormat(formato);
		if(_embeber) { window[nombre].embedFonts = true};
		clip._x = _x;
		clip._y = _y;
		clip.parent=this;
		
		var nN:Number = grosorBox;
		var nBoton:Number = (aColor[1]==0) ? 0xFFFFFF : 0;
		
		if(!bDer && !_auto){
		var botonFondo:Rectangulo = new Rectangulo(clip, nWidth, 0, nN, nHeight, 0xffffff, 80);
		botonFondo.getClip()._visible=false;
		}
		var boton1:Rectangulo = new Rectangulo(clip, nWidth,0,nN,nN, 0,100,false);
		boton1.setGradient([nBoton, 0xFFffff], [40,20], [0, 180], 0, "radial");
		var boton2:Rectangulo = new Rectangulo(clip, nWidth,nHeight-nN,nN,nN, 0,100,false);
		boton2.setGradient([nBoton, 0xFFffff], [40,20], [0, 180], 0, "radial");
		clip[boton1.nombre()]._visible=false;
		clip[boton2.nombre()]._visible=false;
		
		if (window[nombre]._height > nHeight && !_auto) {
			window[nombre].autoSize=false;
			window[nombre]._height=nHeight;
			botonFondo.getClip()._visible=true;
			clip[boton1.nombre()]._visible=true;
			clip[boton1.nombre()].target= window[nombre];
			clip[boton2.nombre()]._visible=true;
			clip[boton2.nombre()].target= window[nombre];
			clip[boton2.nombre()].onPress=function():Void{
				this.target.scroll++;
			};
			clip[boton1.nombre()].onPress=function():Void{
				this.target.scroll--;
			};
		}
		var izq:Rectangulo = new Rectangulo(clip, -nN, 0, nN, window._height, 0,100, false);
		izq.setGradient(aColor, undefined, aRatios);
			clip[izq.nombre()]._visible=bIzq;
			clip[izq.nombre()].swapDepths(clip[boton1.nombre()]);
		var arr:Rectangulo = new Rectangulo(clip, 0, -nN, window._width, nN, 0,100, false);
		arr.setGradient(aColor, undefined, aRatios, 90);
			clip[arr.nombre()]._visible=bArr;
		var der:Rectangulo = new Rectangulo(clip, window._width, 0, nN, window._height, 0,100, false);
		der.setGradient(aColor, undefined, aRatios, 180);
			clip[der.nombre()]._visible=bDer;
		var ab:Rectangulo = new Rectangulo(clip, 0, window._height, window._width, nN, 0,100, false);
		ab.setGradient(aColor, undefined, aRatios, 270);
			clip[ab.nombre()]._visible=bAb;

		if(bIzq && bArr) {
			var iz_ar:Rectangulo = new Rectangulo(clip, -nN, -nN, nN, nN, 0,100, false);
			iz_ar.setGradient(aColor, undefined, [127,255], 45);
		}
		if(bIzq && bAb) {
			var iz_ab:Rectangulo = new Rectangulo(clip, -nN, window._height, nN, nN, 0,100, false);
			iz_ab.setGradient(aColor, undefined, [127,255], 315);
		}
		if(bDer && bArr) {
			var de_ar:Rectangulo = new Rectangulo(clip, window._width, -nN, nN, nN, 0,100, false);
			de_ar.setGradient(aColor, undefined, [127,255], 135);
		}
		if(bDer && bAb) {
			var de_ab:Rectangulo = new Rectangulo(clip, window._width, window._height, nN, nN, 0,100, false);
			de_ab.setGradient(aColor, undefined, [127,255], 225);
		}
					
		var back = new Rectangulo(clip, 0,0, window._width, window._height, _colorBox, _colorAlphaBox);
		var colorFondo:Number = aColor[1];
		clip[back.nombre()].swapDepths(window);
		
		var cristal = new Rectangulo(clip, 0, 0, window._width, window._height, 0, 0, false);
		cristal.setGradient([colorFondo, 0xFEFEDC, colorFondo], [30,5,30], [0,127,255], 30);
			clip[cristal.nombre()]._visible=bCristal;
					
		if(_drag){ 
				window.useHandCursor = false;
				window.onPress = function(){ this._parent.startDrag(); updateAfterEvent();}
				window.onRelease = function() { this._parent.stopDrag(); updateAfterEvent();}
		}
		if(_cerrar){
			var nRot = (bDer && bArr)? 315: 45;
			var nX = (bDer && bArr)? window._width : window._width-nN/2;
			var nY = (bDer && bArr)? -nN/1.2 : 0;
			var cerrar:Rectangulo = new Rectangulo(clip, nX, nY, nN/1.2, nN/1.2, 0xFF0000,100, false);
			cerrar.setGradient([0xFFFFFF, aColor[1]], undefined, [127,255], 315);
			clip[cerrar.nombre()].onPress = function() {
				cerrar();
			}
		}
	}
}